#include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
int f[1<<16],IV[1<<16],TV[1<<16],fac[16];
int n,x[16],y[16],a[16],b[16];
int max(int x,int y){return x>y?x:y;}
int main()
{
	fac[0]=1;
	for(int i=1;i<=15;i++)fac[i]=fac[i-1]*2;
	while(scanf("%d",&n)!=EOF)
	{
		memset(f,0,sizeof(f));
		int state=(1<<n)-1;
		memset(IV,0,sizeof(IV));
		memset(TV,0,sizeof(TV));
		for(int i=1;i<=n;i++)
			scanf("%d%d%d%d",&a[i],&b[i],&x[i],&y[i]);
		for(int i=1;i<=state;i++)
		{			
			for(int j=1;j<=n;j++)
			{
				if(i==fac[j-1])
				{
					if(a[j]>b[j])
					{
						f[i]=y[j]*x[j]*a[j];
					}
					else
					{
						f[i]=x[j]*y[j]*b[j];
					}
					TV[i]=x[j]*a[j];
					IV[i]=y[j]*b[j];
					continue;
				}
				int s=1<<(j-1);
				if((i&s)==0)continue;
				int tem,di,dv;
				if(a[j]>b[j])
				{
					di=0;dv=x[j]*a[j];
				}
				else
				{
					di=y[j]*b[j];dv=0;
				}
				tem=x[j]*(IV[i-s]+di)+y[j]*(TV[i-s]+dv);
				if(f[i-s]+tem>f[i])
				{
					f[i]=f[i-s]+tem;
					IV[i]=IV[i-s]+y[j]*b[j];
					TV[i]=TV[i-s]+x[j]*a[j];
				}										
			}
		}	
		cout<<f[state]<<endl;
	}
	return 0;
}
			



